
#pragma once

/////////////////////////////////////////////////////////////////////////////
// COutputList window

class COutputList : public CListBox
{
// Construction
public:
	COutputList();

// Implementation
public:
	virtual ~COutputList();

    int AddString( LPCTSTR lpszItem );

protected:
    DWORD       m_dwNativeThreadID;

	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
	afx_msg void OnEditCopy();
	afx_msg void OnEditClear();
	afx_msg void OnViewOutput();
    afx_msg LRESULT OnAddString( WPARAM wParam, LPARAM pParam );

	DECLARE_MESSAGE_MAP()
};

enum OutputPanes
{
    OutputBuild = 0,
    OutputDebug,
    OutputFind,
};

class COutputWnd : public CDockablePane
{
// Construction
public:
	COutputWnd();

	void UpdateFonts();
    void ActivateTab( OutputPanes pane );
    void Message( OutputPanes ePane, LPCSTR lpszFmt, ... );

// Attributes
protected:
	CMFCTabCtrl	m_wndTabs;

	COutputList m_wndOutputBuild;
	COutputList m_wndOutputDebug;
	COutputList m_wndOutputFind;

private:
    DWORD       m_dwNativeThreadID;
protected:
	void AdjustHorzScroll(CListBox& wndListBox);

// Implementation
public:
	virtual ~COutputWnd();

protected:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg LRESULT OnSwitchTab( WPARAM wParam, LPARAM pParam );
    
	DECLARE_MESSAGE_MAP()
};

